import store from "@/store/index.js";

let config = {
    // 白名单页面
    whiteList: [
        "/pages/login/index",
        "/pages/index/index",
    ],
    // 登录页
    loginPage: "/pages/login/index",
};

export default async function interceptor() {
    // 获取当前的 token
    const getToken = () => store.state.auth.token || uni.getStorageSync("token") || '';

    /**
     * 页面跳转拦截器
     */
    const interceptPageNavigation = (e) => {
        const token = getToken();
        const url = e.url.split('?')[0];  // 获取跳转的 URL，去掉查询参数

        // 如果是白名单中的页面，则不需要拦截
        if (config.whiteList.includes(url)) {
            return e;
        }

        // 如果没有 token，则跳转到登录页面
        if (!token) {
            uni.reLaunch({
                url: config.loginPage
            });
            return false;
        }

        return e;
    };

    // 拦截页面跳转方法
    const navigationMethods = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
    navigationMethods.forEach(item => {
        uni.addInterceptor(item, {
            invoke(e) {
                return interceptPageNavigation(e);
            },
            fail(err) {
                console.error(err);  // 改用 console.error() 打印错误信息
            }
        });
    });
}